package com.prevpn.service;

import com.prevpn.common.CommonResponse;
//import com.prevpn.dto.ResourceAssignByNameDTO;
import com.prevpn.dto.TunnelAppDTO;
import com.prevpn.dto.WebAppDTO;

import java.util.Map;

/**
 * Web 应用管理服务接口
 */
public interface AppService {

    /**
     * 新增 Web 应用
     * @param webAppDTO Web 应用参数
     * @return CommonResponse 包含 traceId 与新建应用 ID
     */
    CommonResponse<Map<String, Object>> createWebApp(WebAppDTO webAppDTO);

    /**
     * 新增 隧道应用
     * @param tunnelAppDTO 隧道应用参数
     * @return CommonResponse 包含 traceId 与新建应用 ID
     */
    CommonResponse<Map<String, Object>> createTunnelApp(TunnelAppDTO tunnelAppDTO);

    /**
     * 基于应用名称为角色（或组织、用户）授权
     * @param dto 请求体
     * @return CommonResponse
     */
    //CommonResponse<Map<String, Object>> assignByName(ResourceAssignByNameDTO dto);

    /**
     * 基于应用名称查询详情
     * @param name 应用名称
     * @return CommonResponse
     */
    CommonResponse<Map<String, Object>> queryAppByName(String name);

    /**
     * 查询应用列表
     * @param body 查询参数
     * @return CommonResponse
     */
    CommonResponse<Map<String, Object>> queryAppList(Map<String, Object> body);

    /**
     * 批量删除应用
     * @param body 请求参数，可包含 idList 或 nameList
     * @return CommonResponse 响应结果
     */
    CommonResponse<Map<String, Object>> deleteAppResource(Map<String, Object> body);

    /**
     * 编辑 WEB 应用
     */
    CommonResponse<Map<String, Object>> updateWebApp(Map<String, Object> body);

    /**
     * 编辑 隧道应用
     */
    CommonResponse<Map<String, Object>> updateTunnelApp(Map<String, Object> body);
}
